#ifndef __WEBPAGEQUERY_HPP__
#define __WEBPAGEQUERY_HPP__

#include "web_page.hpp"
#include "web_lib.hpp"

namespace gcj
{

class WebPageQuery
{
public:
    WebPageQuery() {
        //获取单例类指针
        _splitTool = SplitTool::getInstance();
        _webLib = WebLib::getInstance();
    }

    string doQuery(const string & str);          //执行查询，返回json结果

    vector<double> getQueryWordsWeightVec(
               const vector<string> & queryWords);    //计算查询词的权重值

    bool executeQuery(
            const vector<string> &queryWords,
            vector<pair<long, vector<double>>>
            & resultVec);                        //执行查询

    string createJson(vector<long> & docIdVec,
            const vector<string> &queryWords);   //生成要发送给客户端的数据

    string returnNoAnswer();                     //当找不到匹配的结果时返回

    vector<long> webSort(vector<double> &queryWordsWeights
                , vector<pair<long, vector<double>>> &resultVec); //余弦相似度对网页排序

    string getAbstract(const vector<string> &queryWords
                       , string &webPageContent);    //获取文章的摘要

    void test(string query);    //测试成员函数的函数，传入用户要搜索的语句

private:
    SplitTool * _splitTool;         //分词器（单例类）
    WebLib * _webLib;               //保存着三个库的单例类
};

}//end of namespace gcj
#endif
